package com.xyht.sca_s.student_manage_system.modules.agreement.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xyht.sca_s.student_manage_system.common.commonReturn.ResponseResult;
import com.xyht.sca_s.student_manage_system.modules.agreement.entity.SmsAgreementApplication;
import com.xyht.sca_s.student_manage_system.modules.agreement.entity.vo.*;

import javax.servlet.http.HttpServletResponse;
import java.util.concurrent.Future;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author XYHT
 * @since 2023-06-11
 */
public interface SmsAgreementApplicationService extends IService<SmsAgreementApplication> {

    ResponseResult addAgreement(SmsAgreementApplicationVO applicationVO, String user_id);

    ResponseResult updateAgreement(SmsAgreementApplicationVO applicationVO, String user_id);

    ResponseResult cancelAgreement(SmsAgreementApplicationCancelVO cancelVO, String user_id);

    ResponseResult allowAgreement(SmsAgreementApplicationAllowVO allowVO, String user_id);

    ResponseResult getAgreementList(String search_str, Integer sort,Integer allowStatus,Integer pageSize, Integer pageNum, Integer apply_type, String user_id);

    ResponseResult getAgreementDetail(String apply_id, String user_id);

    ResponseResult getAgreementApplicationOriginSettingProcess();

    ResponseResult selectAllAgreementApply(String apply_unit, Integer pageSize, Integer pageNum,Integer status);

    Future<ResponseResult> tableDownload(String apply_id, HttpServletResponse response);

    Future<ResponseResult> exportAgreement(SmsAgreementExportVO smsAgreementExportVO, HttpServletResponse response);

    ResponseResult forcedFinishAgreementApplication(String applyId,String userId);

    ResponseResult forcedTorsionAgreementApplication(SmsAgreementApplicationDetailTorsionVO torsionVO);

    ResponseResult replaceApplyAgreementApplication(String userId, SmsAgreementApplicationAllowVO allowVO);

    ResponseResult forcedRejectAgreementApplication(SmsAgreementApplicationForcedVO forcedVO, String userId);

    ResponseResult deletedAgreementApplication(String applyId);

    ResponseResult updateOpinion(SmsAgreementApplicationUpdateOpinionVo updateOpinionVo,String userId);

    ResponseResult updateAnnex(SmsAgreementApplicationUpdateAnnexVo updateAnnexVo,String userId);
}
